welcom

# Содержание

## Глава 1. Инсталляция и запуск CODEVISIONAVR — 10

1.1. Инсталляция CodeVisionAVR — 10 1.2. Запуск CodeVisionAVR — 16

## Глава 2. Интегрированная среда разработки — 18

2.1. Строка меню — 19 2.1.1. Меню File (Файл) — 20 2.1.2. Меню Edit (Правка) — 30 2.1.3. Меню Project (Проект) — 40 2.1.4. Меню Tools (Инструменты) — 44 2.1.5. Меню Settings (Настройки) — 52 2.1.6. Меню Windows (Окна) — 64 2.1.7. Меню Help (Помощь) — 67 2.2. Панель инструментов — 71 2.3. Строка состояния — 73 2.4. Область редактирования — 75 2.5. Окно Navigator (Навигатор) — 75 2.6. Окно Messages (Сообщения) — 80 2.7. Экспорт лицензии на другой компьютер — 80

## Глава 3. Работа в IDE CODEVISIONAVR — 83

3.1. Работа с файлами — 83 3.1.1. Редактирование файла — 84 3.2. Работа с проектами — 86 3.2.1. Конфигурирование проекта — 87 3.2.2. Компиляция проекта — 104 3.2.3. Построение проекта — 106 3.2.4. Отладка программы — 109 3.2.5. Запись программы в чип AVR — 119 3.2.6. Закрытие проекта — 147 3.2.7. Рекомендации — 148

## Глава 4. Основы языка СИ — 156

4.1. Препроцессор — 158 4.1.1. Директива #include — 158 4.1.2. Директивы #define, #undef — 159 4.1.3. Директивы #if, #ifdef, #ifndef, #else и #endif — 162 4.1.4. Директива #line — 163 4.1.5. Директива #error — 164 4.1.6. Директивы #asm и #endasm — 164 4.1.7. Директивы #pragma — 165 4.1.8. Встроенные макросы — 170 4.2. Зарезервированные ключевые слова — 174 4.3. Идентификаторы — 174 4.4. Комментарии — 175 4.5. Константы — 175 4.6. Переменные — 178 4.6.1. Массивы — 183 4.6.2. Структуры — 185 4.6.3. Объединения (смеси) — 192 4.6.4. Перечисления — 197 4.6.5. Инициализация данных — 198 4.6.6. Файл распределения памяти глобальных переменных — 199 4.7. Типы данных — 200 4.8. Определение типов данных — 202 4.9. Преобразования типов — 203 4.10. Операнды и операции — 206 4.10.1. Унарные операции — 206 4.10.2. Бинарные операции — 209 4.10.3. Тернарные операции — 214 4.10.4. Приоритеты операций и порядок вычислений — 215 4.11. Операторы — 216 4.11.1. Оператор if-else — 217 4.11.2. Оператор switch — 217 4.11.3. Оператор for — 219 4.11.4. Оператор while — 220 4.11.5. Оператор do-while — 221 4.11.6. Оператор break — 222 4.11.7. Оператор continue — 223 4.11.8. Оператор return — 224 4.11.9. Оператор goto — 226 4.11.10. Оператор-выражение — 227 4.11.11. Пустой оператор — 227 4.11.12. Составной оператор — 228 4.12. Функции — 229 4.13. Указатели — 232 4.14. Доступ к регистрам ввода/вывода — 235 4.14.1. Побитовый доступ к регистрам ввода/вывода — 237 4.15. Доступ к EEPROM-памяти — 239 4.16. Использование прерываний — 241 4.17. Организация памяти SRAM — 243 4.18. Использование внешнего файла запуска — 246 4.19. Включение в программу ассемблерного кода — 248 4.19.1. Вызов ассемблерных функций из Cи — 248 4.20. Создание библиотек — 250 4.21. Рекомендации — 253 4.22. Ограничения — 253

## Глава 5. Использование библиотечных функций — 254

5.1. Функции символьного типа — 255 5.2. Стандартные функции ввода/вывода языка Си — 256 5.3. Стандартные библиотечные функции — 266 5.4. Математические функции — 269 5.5. Строковые функции — 272 5.6. Макросы списков аргументов переменной длины — 275 5.7. Функции нелокальных переходов — 277 5.8. Функции двоично-десятичного преобразования — 279 5.9. Функции преобразования кода Грея — 280 5.10. Функции доступа к памяти — 282 5.11. Функции протокола 1-Wire — 283 5.11.1. Функции температурного датчика DS1820/DS18S20 от Dallas Semiconductor — 287 5.11.2. Функции EEPROM DS2430 от Dallas Semiconductor — 291 5.11.3. Функции EEPROM DS2433 от Dallas Semiconductor — 296 5.12. Функции SPI — 301 5.13. Функции шины I2C — 307 5.13.1. Функции температурного датчика LM75 от National Semiconductor — 313 5.13.2. Функции термометра/термостата DS1621 от Dallas Semiconductor — 316 5.13.3. Функции часов реального времени PCF8563 от Philips — 319 5.13.4. Функции часов реального времени PCF8583 от Philips — 324 5.13.5. Функции часов реального времени DS1307 от Dallas Semiconductor — 328 5.14. Функции часов реального времени DS1302 от Dallas Semiconductor — 332 5.15. LCD-функции — 335 5.15.1. LCD-функции для дисплеев до 2 40 символов — 342 5.15.2. LCD-функции для дисплеев с 4 40 символов — 353 5.15.3. LCD-функции для дисплеев, подключённых в режиме отображения 8-битовой памяти — 357 5.16. Функции управления питанием — 368 5.17. Функции задержки — 370

## Глава 6. Автоматический генератор программ CODEWIZARDAVR — 372

6.1. Строка меню — 373 6.1.1. Меню File (Файл) — 373 6.1.2. Меню Help (Помощь) — 378 6.2. Закладки — 379 6.2.1. Закладка Chip (Чип) — 379 6.2.2. Закладка External SRAM (Внешнее SRAM) — 380 6.2.3. Закладка Ports (Порты) — 382 6.2.4. Закладка External IRQ (Внешнее прерывание) — 383 6.2.5. Закладка Timers (Таймеры) — 384 6.2.6. Закладка UART или USART — 398 6.2.7. Закладка Analog Comparator (Аналоговый компаратор) — 404 6.2.8. Закладка ADC — 406 6.2.9. Закладка SPI — 410 6.2.10. Закладка USI — 412 6.2.11. Закладка I2C — 414 6.2.12. Закладка 1 Wire — 420 6.2.13. Закладка 2 Wire (I2C) — 422 6.2.14. Закладка LCD Controller (Контроллер LCD) ATmega169 — 423 6.2.15. Закладка LCD — 426 6.2.16. Закладка Bit-Banged — 427 6.2.17. Закладка Project Information (Информация проекта) — 428 6.3. Пример использования CodeWizardAVR — 429

## Глава 7. Примеры проектов — 453

7.1. Проект "Led" — 453 7.2. Проект "ADC8535" — 462 7.3. Проект "C_asm" — 468 7.4. Проект "Multfile" — 471 7.5. Проект "EEPROM" — 476 7.6. Проект "Lcddemo" — 481 7.7. Проект "Lcdchar" — 484 7.8. Проект "Keypad" — 488 7.9. Проект "Ds1820" — 513 7.10. Проект "Thermlcd" — 525 7.11. Проект "Therm75" — 532 7.12. Проект "SPI" — 548 7.13. Проект "Max1241" — 557 7.14. Проект "AVR134" — 570

## Приложение. Источники информации — 590